package push.tools.service.utils;

import java.util.HashMap;
import java.util.regex.Pattern;

/**
 * 随机数验证工具类
 * UUID不能包含连字符，必须是32位连续字符
 */
public class RandomCodeUtils {

    // UUID正则表达式模式（强制要求不带连字符）
    private static final Pattern UUID_PATTERN = Pattern.compile("^[0-9a-fA-F]{32}$");

    /**
     * 验证随机数
     *
     * @param uuidStr 待验证的字符串
     * @return HashMap结果，state为"000"表示校验通过，msg为错误信息
     */
    public static HashMap<String, String> validateUUID(String uuidStr) {
        HashMap<String, String> result = new HashMap<>();
        // 检查输入是否为空
        if (uuidStr == null || uuidStr.isEmpty()) {
            result.put("state", "001");
            result.put("msg", "nonce不能为空");
            return result;
        }
        // 检查是否包含连字符
        if (uuidStr.contains("-")) {
            result.put("state", "002");
            result.put("msg", "nonce不能包含字符");
            return result;
        }
        // 检查长度
        if (uuidStr.length() != 32) {
            result.put("state", "003");
            result.put("msg", "nonce长度不正确");
            return result;
        }
        // 正则表达式校验格式
        if (!UUID_PATTERN.matcher(uuidStr).matches()) {
            result.put("state", "004");
            result.put("msg", "nonce格式不正确");
            return result;
        }
        // 校验通过
        result.put("state", "000");
        result.put("msg", "校验通过");
        return result;
    }
}
